package com.nanbei.queue;

/**
 * @ClassDescription: 双端队列
 * @JdkVersion: 17
 * @Author: BaoShan.li
 * @Created: 2023/11/28 14:15
 */
public interface DequeInterface<E> {

    /**
     * 向队列头插入值
     * @param value 待插入值
     * @return 插入成功返回 true, 插入失败返回 false
     */
    boolean offerFirst(E value);

    /**
     * 向队列尾插入值
     * @param value 待插入值
     * @return 插入成功返回 true, 插入失败返回 false
     */
    boolean offerLast(E value);

    /**
     * 从对列头获取值, 并移除
     * @return 如果队列非空返回对头值, 否则返回 null
     */
    E pollFirst();

    /**
     * 从对列尾获取值, 并移除
     * @return 如果队列非空返回对头值, 否则返回 null
     */
    E pollLast();

    /**
     * 从对列头获取值, 不移除
     * @return 如果队列非空返回对头值, 否则返回 null
     */
    E peekFirst();

    /**
     * 从对列尾获取值, 不移除
     * @return 如果队列非空返回对头值, 否则返回 null
     */
    E peekLast();

    /**
     * 检查队列是否为空
     * @return 空返回 true, 否则返回 false
     */
    boolean isEmpty();

    /**
     * 检查队列是否已满
     * @return 满返回 true, 否则返回 false
     */
    boolean isFull();
}
